package com.zuipin.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.zuipin.entity.product.PropertiesInfo;
import com.zuipin.entity.product.PropertiesVal;
import com.zuipin.util.Pagination;
import com.zuipin.vo.PropInfoSearchVo;
import com.zuipin.vo.PropValVo;

import net.sf.json.JSONObject;

/**
 * 属性信息数据操作接口类
 *
 * @ClassName PropertiesInfoMapper 
 * @author wangcongyi
 * @date 2017年4月18日 下午7:02:37
 */
@Mapper
public interface PropertiesInfoMapper {
	int deleteByPrimaryKey(Long id);
	
	int insert(PropertiesInfo record);
	
	int insertSelective(PropertiesInfo record);
	
	PropertiesInfo selectByPrimaryKey(Long id);
	
	int updateByPrimaryKeySelective(PropertiesInfo record);
	
	int updateByPrimaryKey(PropertiesInfo record);
	
	// 通过品类ID查询符合条件的属性信息
	List<PropertiesInfo> selectByCatId(JSONObject object);
	
	// 查询符合条件的属性值信息(筛选显示)
	List<PropertiesVal> selectPropVal(JSONObject object);
	
	// 通过商品SKU和系统ID获取属性信息
	List<PropValVo> selectPropValInfo(JSONObject object);
	
	// 通过属性ID和系统ID和状态获取属性信息
	PropertiesInfo isExists(@Param("prop") PropertiesInfo prop);
	
	// 修改属性信息状态
	boolean modifyState(@Param("prop") PropertiesInfo prop);
	
	// 通过属性编号和属性名称查询属性信息
	List<PropertiesInfo> selectPropInfo(@Param("prop") PropertiesInfo prop);
	
	// 根据查询的条件VO查询对应的属性信息
	List<PropertiesInfo> findPropInfo(@Param("propSearchVo") PropInfoSearchVo propSearchVo, @Param("page") Pagination page);
	
	/**
	 * 查询（基础属性 分类属性 通用、平台 ）对应的属性值
	 * @param catId
	 * @param sysId
	 * @param propId
	 * @return
	 */
	List<PropertiesVal> findPropVal(@Param("propId") Long propId, @Param("sysId") Long sysId, @Param("catId") Long catId);
	
	/**
	 * 选择性的条件进行筛选
	 * @author zhuangjiajian
	 * @date 2017-8-15 20:03:48
	 * @param search
	 * @return
	 */
	List<PropertiesInfo> selectBySelective(PropertiesInfo search);
	
	/**
	 * 获取当前记录下最大ID
	 * @return
	 */
	Long getLastId();
	
	/**
	 * 
	 * @Title: findByIds 
	 * @Description: 根据多个Id查询
	 * @author xjd
	 * @param @param ids
	 * @param @return
	 * @return List<PropertiesInfo>
	 * @throws
	 */
	List<PropertiesInfo> findByIds(@Param("ids") List<Long> ids);
	
}